using System.Collections.Generic;
using TestCases.CompareAssert.Core.Comparers.Interfaces;
using TestCases.Utils.Pairs;

namespace TestCases.CompareAssert.Core.Interfaces
{
    public interface IResultBuilderFactory
    {
        IResultBuilder ForSimpleResult(IObjectComparer comparer, CompareStatus status, IPair<IComparerObject, IComparerObject> pair);
        IResultBuilder ForDecoratorResult(IObjectComparer comparer, CompareStatus status, IPair<IComparerObject, IComparerObject> pair, IResultProvider child);
        IResultBuilder ForCompositeResult<T>(IObjectComparer comparer, CompareStatus status, IPair<IComparerObject, IComparerObject> pair, IList<T> children) where T: IResultProvider;
    }
}